発話プロファイラーを使ってコードを実装する前に会話フローをテストする
はじめに
Alexaのカスタムスキル開発では、マルチターンの会話をデリゲートの機能によってAlexa側に任せることができます。
さらに、開発コンソール上での発話プロファイラーという機能を使うと、バックエンドのコードを実装する前に会話フローのテストを行うことができます。
発話プロファイラーでは、実際に発話を入力して会話をテストできる他、発話に対して解決されたインテントや収集済みのスロット値を確認することができます。
このエントリでは、発話プロファイラーを使ってコンソール上でマルチターンの会話フローをテストする方法をご紹介します。
※発話プロファイラーは2019/2/4現在、英語のスキルでのみ利用することができます。
2019/2/8追記:日本語環境でも発話プロファイラーが利用可能になりました!
[Alexa] 日本語スキルでも発話プロファイラーを使った対話モデルの確認ができるようになりました
スキルの準備
今回は、ホテルを予約するスキル(英語)を例にとってみます。以下のようなシナリオです。
A: What city will you be staying in? U: Seattle. A: What day do you want to check in? U: March 1st. A: How many nights will you be staying? U: 3 nights. A: What type of room would you like, queen, king or deluxe? U: queen. A: Okay, I have you down for a 3 night stay in Seattle starting 2019-03-01. Shall I book the reservation? U: Okay.
適当にスキルを作成し、ホテルを予約するBookingIntent
を準備します。
BookingIntent
では予約に必要な以下のスロット値をAlexaにデリゲートして収集してもらい、最後に予約内容の確認を行います。
Location
(Amazon.US_CITY
)CheckInDate
(Amazon.DATE
)Nights
(Amazon.NUMBER
)RoomType
(King/Queen/Deluxeからなるカスタムスロット)
スキルのエンドポイントを設定する必要はありませんが、対話モデルのビルドは行っておきます。
発話プロファイラーを使ってみる
それでは、発話プロファイラーを使ってみます。 インテント編集画面右上の「発話プロファイラー」をクリックします。
画面右側に発話プロファイラーが表示されるので、発話を入力してBookingIntent
の会話フローテストを行います。
発話を入力すると、発話に対してAlexaが解決したインテントおよびその他の候補が表示されます。
(今回は、BookingIntent
のみ定義しているので他の候補はありません)
次に行き先を指定すると、Location
スロット値が収集できていることがわかります。
ダイアログがElicitSlot
となっており、マルチターンの会話でスロット値を収集している状態となっています。
(※注意点として、発話プロファイラーはスロット値に設定した検証はサポートしていないため、検証ルールを確認することはできません)
会話を進めていき、必要な予約内容を入力すると最後の確認となります。
ダイアログがConfirmIntent
となっており、スロット値の収集が完了し会話の最後の状態となっています。
確認に返答すると、マルチターンの会話が終了します。 バックエンドの実装前に、会話のテストを行うことができました。
おわりに
Alexaの開発コンソール上で使える発話プロファイラーを利用して、会話フローのテストを行ってみました。
発話プロファイラーを使うと、バックエンドのコードを実装する前に会話がテストできるので、フローの設計段階で会話のテストと改善を繰り返すことができます。これは便利ですね。
Alexaにデリゲートするダイアログも、会話の組み立てやスロット値の収集についてサクッとテストできます。 また、インテントの解決結果や他の候補が表示されるのも、サンプル発話の改善に非常に役立つのではないでしょうか。
現在は英語のスキルのみ利用できますが、他の言語にも対応予定とのことなので、期待して待ちましょう!
それでは。
2019/2/8追記:日本語環境でも発話プロファイラーが利用可能になりました!